package com.xzcedu.homework;

import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

/**
 * @author 徐州城
 * @version 1.0
 * 1. 客户端输入一个 音乐 文件名，比如高山流水，服务端 收到音乐名后，
 * 可以给客户端 返回这个 音乐文件，如果服务器没有这个文件，返回 一个默认的音乐即可
 * 2. 客户端收到文件后，保存到本地 e:\\
 * 3. 提示：该程序可以使用 StreamUtils.java
 * <p>
 * 本质：其实就是 指定下载文件的应用.
 */
public class Homework03Client {
    public static void main(String[] args) throws Exception {

        //1. 建立连接
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        //2. 输出信息 发送给服务端
        OutputStream outputStream = socket.getOutputStream();
        //等待用户输入
        System.out.print("你想下载什么音乐：");
        Scanner scanner = new Scanner(System.in);
        String downLoadFileName = scanner.next();
        outputStream.write(downLoadFileName.getBytes());
        socket.shutdownOutput();//结束标记

        //3. 接收到 服务端的数据 并写入磁盘
        BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        byte[] data = StreamUtils.streamToByteArray(bis);

        //4. 得到一个输出流，准备将data 写入到磁盘
        String filePath = "e:\\" + downLoadFileName + ".mp3";
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
        bos.write(data);

        //4. 关闭流
        bos.close();
        bis.close();
        outputStream.close();
        socket.close();

        System.out.println("客户端下载完毕，正确退出...");
    }
}
